#ifndef CARCOUNT_H
#define CARCOUNT_H


#if 0
MOG2基本使用方法：
Ptr<BackgroundSubtractorMOG2> bgsubtractor = createBackgroundSubtractorMOG2();
bgsubtractor->setHistory(20);
bgsubtractor->setVarThreshold(100);
bgsubtractor->setDetectShadows(true);
bgsubtractor->setNMixtures(5);
bgsubtractor->setBackgroundRatio(4);
bgsubtractor->setShadowThreshold(40);
bgsubtractor->setVarInit(15);
bgsubtractor->setVarMax(20);
bgsubtractor->setVarMin(4);
bgsubtractor->setVarThresholdGen(100);

History：用于训练背景的帧数，history可以用于计算当前的learning rate ，history越大，learning rate越低，背景更新越缓慢；
VarThreshold：方差阈值，主要用于判断前景还是背景，值越大，灵敏度越低；
DetectShadows：是否检测有影子，开启后会增加算法复杂度。
NMixtures：高斯模型个数，默认5个，最多8个，模型数越多，耗时越长；
BackgroundRatio：高斯背景模型权重和阈值，nmixtures个模型按权重排序后，只取模型权重累加值大于backgroundRatio的前几个作为背景模型；
VarInit：新建高斯模型的方差初始值，默认15；
VarMax：背景更新时，用于限制高斯模型方差的最大值，默认20；
VarMin：背景更新时，用于限制高斯模型方差的最小值，默认4；
VarThresholdGen：方差阈值，用于已经存在的匹配的模型，如果不存在则新建一个。

#endif


#include <QCheckBox>
#include <QLabel>
#include <QMainWindow>
#include <QTime>
#include <opencv.hpp>
QT_BEGIN_NAMESPACE
namespace Ui { class CarCount; }
QT_END_NAMESPACE

class CarCount : public QMainWindow
{
    Q_OBJECT

public:
    CarCount(QWidget *parent = nullptr);
    ~CarCount();

    void mousePressEvent(QMouseEvent* e);
    void mouseMoveEvent(QMouseEvent* e);
    //void paintEvent(QPaintEvent* e);
    bool eventFilter(QObject *obj, QEvent* e);

    //定时器更新
    void timerEvent(QTimerEvent *e);

protected:
    void paint();
    void setRect(int i, bool checked);
private slots:



private:
    Ui::CarCount *ui;
    int x,y,x2,y2,x_1,y_1,x_2,y_2,x_3,y_3;
    cv::Rect rects;
    cv::Ptr<cv::BackgroundSubtractorMOG2> bgMOG2;
    cv::VideoCapture  cap;
    //    int LanneLightSum_prev;			//车道亮度和：上一帧的
    int	LanneCarCnt =0,LanneCarCnt_2=0,LanneCarCnt_3=0;	//车道车辆计数器





};
#endif // CARCOUNT_H
